﻿Imports System.Data
Imports System.Data.SqlClient

Public Class SeguroDAL

    Sub New()

    End Sub



    Function inserir(ByVal segNome As String, ByVal segDescricao As String,
                     ByVal segValor As Double, ByVal segAtivo As Char) As Integer
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim codigo As Integer
        Try

            'Comando para inserção de dados no banco
            cmd.CommandText = "INSERT INTO seguro (seg_nome, seg_descricao, seg_valor, seg_ativo_sn) values (@segNome, @segDescricao, @segValor, @segAtivo)"

            'Parâmetros de entrada
            cmd.Parameters.Add(New SqlParameter("@segNome", SqlDbType.VarChar, 50)).Value = segNome
            cmd.Parameters.Add(New SqlParameter("@segDescricao", SqlDbType.VarChar, 150)).Value = segDescricao
            cmd.Parameters.Add(New SqlParameter("@segValor", SqlDbType.Money)).Value = segValor
            cmd.Parameters.Add(New SqlParameter("@segAtivo", SqlDbType.Char)).Value = segAtivo

            'Execução da inserção com retorno do valor da chave primária
            codigo = objD.executacomandoAI(cmd, "seguro")

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return codigo
    End Function

    Sub alterar(ByVal codigo As Integer, ByVal segNome As String, ByVal segDescricao As String,
                     ByVal segValor As Double, ByVal segAtivo As Char)
        Dim cmd As New SqlCommand
        Dim objD As New Dados

        Try

            'Comando para atualização de dados no banco
            cmd.CommandText = "UPDATE seguro SET seg_nome = @segNome, seg_descricao = @segDescricao," & _
                " seg_valor = @segValor, seg_ativo_sn = @segAtivo" & _
                " WHERE seg_codigo = @codigo"

            'Parâmetros de entrada
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo
            cmd.Parameters.Add(New SqlParameter("@segNome", SqlDbType.VarChar, 50)).Value = segNome
            cmd.Parameters.Add(New SqlParameter("@segDescricao", SqlDbType.VarChar, 150)).Value = segDescricao
            cmd.Parameters.Add(New SqlParameter("@segValor", SqlDbType.Money)).Value = segValor
            cmd.Parameters.Add(New SqlParameter("@segAtivo", SqlDbType.Char)).Value = segAtivo

            'Execução da alteração
            objD.executacomando(cmd)
        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
    End Sub

    Sub excluir(ByVal codigo As Integer)
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Try
            'Comando para exclusão de um registro no banco
            cmd.CommandText = "DELETE FROM seguro WHERE seg_codigo = @codigo"

            'Parâmetro de comparação
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo

            'Execução do comando
            objD.executacomando(cmd)
        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
    End Sub

    Function localizar(ByVal descricao As String) As DataTable
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim tab As DataTable = Nothing
        Try
        If (descricao = "ultimo") Then
            cmd.CommandText = "SELECT seg_codigo = max(seg_codigo) FROM seguro "
        ElseIf (descricao = "primeiro") Then
            cmd.CommandText = "SELECT seg_codigo = min(seg_codigo) FROM seguro "
        
        Else
            'Comando para localizar vários registros no banco
            cmd.CommandText = "SELECT * FROM seguro WHERE seg_nome like @descricao"

            'Parâmetro de entrada
            cmd.Parameters.Add(New SqlParameter("@descricao", SqlDbType.VarChar)).Value = descricao + "%"
        End If
        'Execução do comando
        tab = objD.executaConsulta(cmd)

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return tab
        tab = Nothing
    End Function

    Function localizarProxAnterior(ByVal descricao As String, ByVal codigo As Integer) As DataTable
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim tab As DataTable = Nothing
        Try
            If (descricao = "proximo") Then
                cmd.CommandText = "SELECT seg_codigo FROM seguro WHERE seg_codigo = (SELECT MIN(seg_codigo) FROM seguro WHERE seg_codigo > @codigo)"

            ElseIf (descricao = "anterior") Then
                cmd.CommandText = "SELECT seg_codigo FROM seguro  WHERE seg_codigo = (SELECT MAX(seg_codigo) FROM seguro WHERE seg_codigo < @codigo)"


            End If
            'Parâmetro de entrada
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo
            'Execução do comando
            tab = objD.executaConsulta(cmd)

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return tab
        tab = Nothing
    End Function



    Function localizar(ByVal codigo As Integer) As DataTable
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim tab As DataTable = Nothing
        Try
            'Comando para localizar vários registros no banco
            cmd.CommandText = "SELECT * FROM seguro WHERE seg_codigo = @codigo"

            'Parâmetro de entrada 
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo

            'Execução do comando
            tab = objD.executaConsulta(cmd)

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return tab
        tab = Nothing
    End Function

    Function VerificaExclusao(ByVal codigo As Integer) As Boolean
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim verifica As Boolean = False
        Try
            cmd.CommandText = "Select seg_codigo from cargas where seg_codigo = @codigo"
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo
            verifica = objD.executacomandoString(cmd, "cargas")
        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return verifica
    End Function
    Function VerificaSituacao(ByVal codigo As String) As Boolean
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim verifica As Boolean = False
        Try
            cmd.CommandText = "Select seg_codigo from cargas where seg_codigo = @codigo and car_status <> 4 and car_status <> 7 "
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo
            verifica = objD.executacomandoString(cmd, "cargas")
        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return verifica
    End Function
End Class
